package ee.tkasekamp.vickywaranalyzer;
import ee.tkasekamp.vickywaranalyzer.controller.ErrorController;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
// start is called on the FX Application Thread,
// so Thread.currentThread() is the FX application thread:
// Thread.setDefaultUncaughtExceptionHandler(Main::showError);
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource(
"Main.fxml"));
stage.setTitle("Victoria II war analyzer");
stage.setScene(new Scene(root));
stage.show();
/* Cause I'm Estonian, thats why */
stage.getIcons().add(new Image("/flags/EST.png"));
}
private static void showError(Thread t, Throwable e) {
System.err.println("***Default exception handler***");
if (Platform.isFxApplicationThread()) {
showErrorDialog(e);
} else {
System.err.println("An unexpected error occurred in " + t);
}
}
private static void showErrorDialog(Throwable e) {
StringWriter errorMsg = new StringWriter();
e.getCause().getCause().printStackTrace(new PrintWriter(errorMsg));
Stage dialog = new Stage();
dialog.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader = new FXMLLoader(Main.class.getClassLoader()
.getResource("Error.fxml"));
try {
Parent root = loader.load();
((ErrorController) loader.getController()).setErrorText(errorMsg
.toString());
dialog.setScene(new Scene(root, 250, 400));
dialog.show();
} catch (IOException exc) {
exc.printStackTrace();
}
}
}